home *** CD-ROM | disk | FTP | other *** search
- /* AddressOMaticPrivate.h */
- /*
- * AddressOMatic Sample
- * AddressOMaticPrivate.h
- * Copyright © 1993 Apple Computer Inc. All rights reserved.
- */
- #ifndef _AddressOMaticPrivate_
- #define _AddressOMaticPrivate_
-
- #ifndef REZ /* Most of this can't be done by REZ */
- #ifndef _AOM_EXTERN
- #define _AOM_EXTERN extern
- #endif
- #include "AddressOMatic.h"
- #include "LogManager.h"
- extern ListHandle gCurrentLog;
- #define LOG(status, msg) LogStatus(gCurrentLog, (status), (msg))
- #define NOTE(msg) DisplayLogString(gCurrentLog, (msg))
- #define NOTE_RString(msg, data) do { \
- Str255 __work; \
- pstrcpy(__work, (msg)); \
- pstrcat(__work, "\p “"); \
- pstrcat(__work, OCERToPString((data))); \
- pstrcat(__work, "\p”"); \
- DisplayLogString(gCurrentLog, __work); \
- } while (0)
- #define NOTE_Value(msg, value) do { \
- Str255 __work; \
- Str15 __valueString; \
- pstrcpy(__work, (msg)); \
- pstrcat(__work, "\p = "); \
- NumToString((value), __valueString); \
- pstrcat(__work, __valueString); \
- DisplayLogString(gCurrentLog, __work); \
- } while (0)
- #ifndef TRUE
- #define TRUE 1
- #define FALSE 0
- #endif
- #ifndef NULL
- #define NULL 0
- #endif
-
-
- /*
- * All private functions refer to the AddressOMatic data record using
- * a pointer named aomPtr.
- */
- #define AOM (*aomPtr) /* The AOM Data record */
- #define RECT(what) (AOM.itemRect[(what)]) /* Any item's view */
- #define BOUNDS RECT(kAOMPanelItem) /* Boundary of the entire panel */
- #define INTERIOR RECT(kAOMInteriorAreaItem) /* Panel without drop shadow */
- #define PANEL RECT(kAOMSDPPanelItem) /* The SDP Panels are here */
- #define EXTERIOR RECT(kAOMSDPPanelExterior) /* SDP Panel + Find focus rect */
- #define TITLE RECT(kAOMPanelLabelItem) /* Panel label */
- #define FIND (**AOM.findPanel) /* The de-referenced Find panel */
- #define FINDING (FIND.nowFinding != 0)
- #define IS_COLOR(port) (((((CGrafPtr) (port))->portVersion) & 0xC000) != 0)
- #define COLOR_DEPTH(port) ((**((CGrafPtr) port)->portPixMap).pixelSize)
- #define DIR_INFO_SIZE ( \
- GetHandleSize((Handle) AOM.dirInfoHdl) \
- / sizeof (_AOMDirectoryInfoRecord) \
- )
-
-
- /*
- * The radio buttons are often indexed as: for (i = 0; i < kAOMRadioButtons; i++).
- * The following macro gives the view rect for a radio button given its index.
- */
- #define RADIO(i) RECT((i) + kAOMFirstRadio)
-
- /*
- * Test whether a particular mode is selected
- */
- #define SELECTED(bit) (AOM.currentMode == (bit))
- #define PD_SELECTED SELECTED(kAOMEnablePDBit)
- #define PANEL_SELECTED SELECTED(kAOMEnablePanelBit)
- #define FIND_SELECTED SELECTED(kAOMEnableFindBit)
- #ifdef ENABLE_TYPEIN
- #define TYPEIN_SELECTED SELECTED(kAOMEnableTypeInBit)
- #else
- #define TYPEIN_SELECTED (FALSE)
- #endif
-
- #define height(r) ((r).bottom - (r).top)
- #define width(r) ((r).right - (r).left)
- #define CLEAR(what) do { \
- register unsigned char *_ptr = (unsigned char *) &what; \
- register unsigned long _size = sizeof what; \
- while (_size-- > 0) \
- *_ptr++ = 0; \
- } while (0)
- /*
- * Definitions (may be made public)
- */
- #define kAOMLabelFontNumber (applFont)
- #define kAOMLabelFontSize (9)
- #define kAOMLabelFontHeight (12)
- #define kSpinnerDelay (6) /* Ticks between spinner spins */
- #define kWorkBufferSize (512) /* For DirEnumerateDirectoriesGet */
- typedef enum {
- kAOMLabelFontStyle = bold,
- kAOMTextFontStyle = normal
- } AOMFontStyle;
- /*
- * This is the color palette we use. The colors are taken from the Apple Icon
- * Color 'clut' resource (you can find it in ResEdit), if nowhere else.
- *
- * These values are taken from engineering sources.
- */
- #define kAOMBackground 61166
- #define kAOMShadow 30583
- #define kAOMBevelDark 40859
- #define kAOMBevelLight 65535
-
- /*
- * kAOMBackgroundColor The AddressOMatic background.
- * kAOMShadowColor The fat drop-shadow to the right/bottom of the panel.
- * kAOMDarkBevelColor A one-pixel shadow to the right/bottom of the panel
- * kAOMLightBevelColor A one-pixel hilight to the left/top of the panel
- */
- #define kAOMBackgroundColor { kAOMBackground, kAOMBackground, kAOMBackground }
- #define kAOMShadowColor { kAOMShadow, kAOMShadow, kAOMShadow }
- #define kAOMDarkBevelColor { kAOMBevelDark, kAOMBevelDark, kAOMBevelDark }
- #define kAOMLightBevelColor { kAOMBevelLight, kAOMBevelLight, kAOMBevelLight }
- #define kAOMWhiteColor { 65535, 65535, 65535 }
- #define kAOMBlackColor { 0, 0, 0 }
-
- /*
- * These are the Icon Family resources for the radio buttons.
- */
- enum {
- kAOMPDRadioButton = -16712, /* AOCE defines these */
- kAOMPDRadioSelect,
- kAOMPanelRadioButton,
- kAOMPanelRadioSelect,
- kAOMFindRadioButton,
- kAOMFindRadioSelect,
- kAOMTypeInRadioButton,
- kAOMTypeInRadioSelect
- };
-
- /*
- * Panel layouts
- */
- #define kAOMWidthMinimum (270) /* Pixels wide, by inspection */
- #define kAOMHeightMinimum (180) /* Pixels high, by inspection */
- #define kAOMRadioButtonLeft (10) /* Radio button Horizontal */
- #define kAOMRadioButtonTop (18) /* First radio button vertical */
- #define kAOMRadioButtonVOffset (31) /* Vertical offset betw buttons */
- #define kAOMRadioButtonSize (25) /* Radio button height/width */
- /*
- * The panel itself is positioned within the display rectangle. The inset
- * values allow expanding/contracting the panel when the AOM panel changes its
- * size. I.e., if the AOM Panel bottom is 241, SDPPanel Bottom is at 241 - 41.
- */
- #define kAOMPanelTopInset (24) /* SDP Panel Top */
- #define kAOMPanelLeftInset (45) /* SDP Panel Left */
- #define kAOMPanelRightInset (16) /* SDP Panel Right */
- #define kAOMPanelBottomInset (42) /* SDP Panel Bottom */
-
- #ifdef ENABLE_TYPEIN
- /*
- * The type-in panel consists of the text area and a directory popup cdef.
- */
- #define kAOMTypeInAddressLabelTop (kAOMPanelTopInset + 14)
- #define kAOMTypeInAddressTop (kAOMTypeInAddressLabelTop + 18)
- #define kAOMTypeInAddressBottom (kAOMTypeInAddressTop + 50)
- #define kAOMTypeInDirectoryLabelTop (kAOMTypeInAddressBottom + 8)
- #define kAOMTypeInPopupTop (kAOMTypeInDirectoryLabelTop)
- #define kAOMTypeInPopupHeight (18)
- #endif
-
- /*
- * Position the "active" spinner in the upper-right corner of the panel
- */
- #define kAOMSpinnerTopInset (5) /* Spinner from top of panel */
- #define kAOMSpinnerRightInset (24) /* Spinner from right of panel */
- #define kAOMSpinnerSize (16) /* It's a SICN */
- /*
- * The panel label
- */
- #define kAOMPanelLabelTop (kAOMSpinnerTopInset) /* Label from top */
- #define kAOMPanelLabelHeight (16) /* Should use font line height */
-
- /*
- * The big, fat, drop shadow
- */
- #define kAOMDropShadowWidth (4) /* Shadow height/width/offset */
- /*
- * There are three buttons at the bottom conventionally called "Done," "CC,"
- * and "To." The layout here is reasonable for Roman (left-right) languages,
- * and should be modified for Hebrew/Arabic. For that matter, the whole thing
- * may need adjustment for non-English environments.
- */
- #define kAOMButtonBottomInset (16) /* Button bottom fm AOM bottom */
- #define kAOMButtonHeight (16) /* Button height */
- #define kAOMDoneButtonLeft kAOMPanelLeftInset /* Done left inset */
- #define kAOMDoneButtonWidth (44) /* Done button width */
- /*
- * The CC and To buttons are aligned to the right edge of the panel
- */
- #define kAOMCCButtonWidth kAOMDoneButtonWidth /* CC button width */
- #define kAOMToButtonWidth kAOMDoneButtonWidth /* To button width */
- #define kAOMToButtonRightInset kAOMPanelRightInset /* To button right edge */
- #define kAOMCCButtonGap 13 /* Betw. "cc" and "to" */
-
- /*
- * Type-in enumerates all catalogs (directories) and stores the information in
- * a handle-based vector of _AOMDirectoryInfoRecord structures.
- */
- typedef struct _AOMDirectoryInfoRecord {
- #if 0
- DirectoryName directoryName; /* Directory name (RString) */
- DirDiscriminator discriminator; /* Discriminator value */
- DirGestalt features; /* Directory features */
- #else
- /*
- * This information is returned by DirGetExtendedDirectoriesInfo.
- */
- PackedRLIPtr *packedRLIHandle; /* Copy of directory's packed RLI */
- OSType entnType; /* Address type */
- #endif
- } _AOMDirectoryInfoRecord, *_AOMDirectoryInfoPtr, **_AOMDirectoryInfoHdl;
-
- /*
- * This is the information we need to draw the radio buttons.
- */
- typedef struct AOMRadioButton {
- AOMModeBit modeBit; /* Relates button's index to mask bit */
- short normal; /* Unselected icon family resource id */
- short selected; /* Selected icon family resource id */
- } AOMRadioButton, *AOMRadioButtonPtr;
-
- /*
- * Font size, style etc. that are preserved by AOM functions.
- */
- typedef struct AOMSaveState {
- GrafPtr savePort;
- PenState savePenState;
- short textFont;
- short textSize;
- short textFace;
- RGBColor foregroundColor;
- RGBColor backgroundColor;
- } AOMSaveState, *AOMSaveStatePtr;
-
- enum {
- kButtonDefaultInset = 4, /* Default ring inset */
- kButtonDefaultPenSize = 3, /* Default ring size */
- kActiveControl = 0, /* contrlHilite value */
- kInactiveControl = 255, /* contrlHilite value
- kInvisibleCtrl = 0, /* contrlVis values (invisible) */
- kVisibleCtrl = 0xFF /* contrlVis (visible) */
- };
- #define ControlEnabled(ctrl) \
- ((ctrl) != NULL && (**ctrl).contrlHilite != kInactiveControl)
-
- /*
- * AddressOMatic private functions
- */
- void _AOMSaveState(
- register AddressOMaticPtr aomPtr,
- AOMFontStyle textFace,
- AOMSaveStatePtr statePtr
- );
- void _AOMSetFont(
- register AddressOMaticPtr aomPtr,
- AOMFontStyle textFace
- );
- void _AOMRestoreState(
- AOMSaveStatePtr statePtr
- );
- void _AOMDecorateDisplay(
- register AddressOMaticPtr aomPtr
- );
- OSErr _AOMCreatePanels(
- register AddressOMaticPtr aomPtr
- );
- OSErr _AOMCreateButtons(
- register AddressOMaticPtr aomPtr,
- AOMModeMask enableModeMask
- );
- void _AOMSelectMode(
- AddressOMaticPtr aomPtr,
- AOMModeBit newMode
- );
- void _AOMPlotIcon(
- register AddressOMaticPtr aomPtr,
- short index,
- Boolean isSelected
- );
- void _AOMDrawDefaultButtonOutline(
- ControlHandle theControl,
- Boolean doDrawButton
- );
- GDHandle _AOMGetDeviceFromRect(
- const Rect *viewRect
- );
- void _AOMDrawTitleString(
- register AddressOMaticPtr aomPtr
- );
- void _AOMSetButtonText(
- register AddressOMaticPtr aomPtr
- );
- void _AOMFlashButton(
- register AddressOMaticPtr aomPtr,
- ControlHandle theControl
- );
- /*
- * Animation
- */
- pascal void _AOMAnimatePanel(
- SDPPanelHandle panelHandle,
- Boolean busy
- );
- pascal void _AOMAnimateFindPanel(
- SDPFindPanelHandle findPanelHandle,
- Boolean busy
- );
- void _AOMUpdateSpinner(
- register AddressOMaticPtr aomPtr
- );
-
- /*
- * SDP Directory Panel Manager (used for the Browser and Personal Directory)
- */
- OSErr _AOMPanelCreate(
- register AddressOMaticPtr aomPtr,
- const RStringPtr *typesList, /* Types to select */
- unsigned long typeCount, /* Number of types */
- const PackedRLI *initialRLI, /* Initial selection */
- DirEnumChoices enumFlags, /* Enumeration flags */
- DirMatchWith matchTypeHow, /* Enumeration mode */
- short helpResourceID, /* Help strings */
- SDPPanelHandle *panelHandlePtr /* Result */
- );
- OSErr _AOMPanelDispose(
- register AddressOMaticPtr aomPtr,
- SDPPanelHandle panelHandle
- );
- OSErr _AOMPanelShow(
- register AddressOMaticPtr aomPtr,
- SDPPanelHandle panelHandle,
- Boolean isShow
- );
- OSErr _AOMPanelEnable(
- register AddressOMaticPtr aomPtr,
- SDPPanelHandle panelHandle,
- Boolean isEnable
- );
- OSErr _AOMPanelSetFocus(
- register AddressOMaticPtr aomPtr,
- SDPPanelHandle panelHandle,
- Boolean hasFocus
- );
- OSErr _AOMPanelUpdate(
- register AddressOMaticPtr aomPtr,
- SDPPanelHandle panelHandle,
- RgnHandle drawRgn
- );
- OSErr _AOMPanelExtractSelection(
- register AddressOMaticPtr aomPtr,
- SDPPanelHandle panelHandle,
- unsigned short *selectionSize,
- PackedDSSpecPtr *dsSpec
- );
- void _AOMPanelAdjust(
- register AddressOMaticPtr aomPtr,
- SDPPanelHandle panelHandle
- );
- OSErr _AOMPanelSetIdentity(
- register AddressOMaticPtr aomPtr,
- SDPPanelHandle panelHandle,
- AuthIdentity userIdentity
- );
- /*
- * Find panel handler
- */
- OSErr _AOMFindCreate(
- register AddressOMaticPtr aomPtr,
- const RStringPtr *typesList, /* Types to select */
- unsigned long typeCount, /* Number of types */
- short simultaneousSearchCount,
- SDPFindPanelFocus initialFocus,
- DirMatchWith matchTypeHow, /* Enumeration mode */
- short helpResourceID /* Help strings */
- );
- OSErr _AOMFindDispose(
- register AddressOMaticPtr aomPtr
- );
- OSErr _AOMFindShow(
- register AddressOMaticPtr aomPtr,
- Boolean isShow
- );
- OSErr _AOMFindEnable(
- register AddressOMaticPtr aomPtr,
- Boolean isEnable
- );
- OSErr _AOMFindSetFocus(
- register AddressOMaticPtr aomPtr,
- SDPFindPanelFocus newFocus
- );
- OSErr _AOMFindUpdate(
- register AddressOMaticPtr aomPtr,
- RgnHandle drawRgn
- );
- OSErr _AOMFindExtractSelection(
- register AddressOMaticPtr aomPtr,
- unsigned short *selectionSize,
- PackedDSSpecPtr *dsSpec
- );
- OSErr _AOMFindStartStop(
- register AddressOMaticPtr aomPtr,
- Boolean startFind
- );
- void _AOMFindAdjust(
- register AddressOMaticPtr aomPtr
- );
- OSErr _AOMFindSetIdentity(
- register AddressOMaticPtr aomPtr,
- AuthIdentity userIdentity
- );
- /*
- * Type-in handlers
- */
- #ifdef ENABLE_TYPEIN
- OSErr _AOMTypeInCreate(
- register AddressOMaticPtr aomPtr
- );
- OSErr _AOMTypeInDispose(
- register AddressOMaticPtr aomPtr
- );
- OSErr _AOMTypeInEvent(
- register AddressOMaticPtr aomPtr,
- const EventRecord *theEvent,
- register AOMPanelState *whatHappened
- );
- OSErr _AOMTypeInShow(
- register AddressOMaticPtr aomPtr,
- Boolean isShow
- );
- OSErr _AOMTypeInUpdate(
- register AddressOMaticPtr aomPtr,
- RgnHandle drawRgn
- );
- OSErr _AOMTypeInExtractSelection(
- register AddressOMaticPtr aomPtr,
- unsigned short *selectionSize,
- PackedDSSpecPtr *dsSpec
- );
- void _AOMTypeInAdjust(
- register AddressOMaticPtr aomPtr
- );
- #endif
- /*
- * Cheap 'n dirty pascal string copy routine.
- */
- #ifndef pstrcpy
- #define pstrcpy(dst, src) do { \
- StringPtr _src = (src); \
- BlockMove(_src, dst, _src[0] + 1); \
- } while (0)
- #endif
- /*
- * Cheap 'n dirty pascal string concat.
- */
- #ifndef pstrcat
- #define pstrcat(dst, src) do { \
- StringPtr _dst = (dst); \
- StringPtr _src = (src); \
- short _len; \
- _len = 255 - _dst[0]; \
- if (_len > _src[0]) _len = _src[0]; \
- BlockMove(&_src[1], &_dst[1] + _dst[0], _len); \
- _dst[0] += _len; \
- } while (0)
- #endif
-
- #define width(r) ((r).right - (r).left)
- #define height(r) ((r).bottom - (r).top)
-
- /*
- * AddressOMatic private globals.
- */
- _AOM_EXTERN CCTabHandle _AOMccTabHandle; /* Private control color table */
- extern const AOMRadioButton _AOMRadioInfo[kAOMRadioButtons];
- extern const RGBColor _AOMBackgroundColor;
- extern const RGBColor _AOMShadowColor;
- extern const RGBColor _AOMDarkBevelColor;
- extern const RGBColor _AOMLightBevelColor;
- extern const RGBColor _AOMDisabledTextColor;
- extern const RGBColor _AOMDisabledRingColor;
- extern const RGBColor _AOMWhiteColor;
- extern const RGBColor _AOMBlackColor;
-
- #endif /* Not REZ */
- #endif /* _AddressOMatic_ */
-
-